//import CryptoJS from 'crypto-js'

// 加密密钥
const SECRET_KEY = 'your-secret-key'

// 基础配置
const BASE_CONFIG = {
    baseUrl: 'http://apiv2.course.com',
    header: {
        'Content-Type': 'application/json',
        'X-Client-Version': '1.0.0',
        'X-Platform': 'uniapp'
    }
}

// 加密方法
const encrypt = (data) => {
    return CryptoJS.AES.encrypt(JSON.stringify(data), SECRET_KEY).toString()
}

// 解密方法
const decrypt = (encryptedData) => {
    const bytes = CryptoJS.AES.decrypt(encryptedData, SECRET_KEY)
    return JSON.parse(bytes.toString(CryptoJS.enc.Utf8))
}

// 获取通用请求头
const getCommonHeaders = () => {
    const token = uni.getStorageSync('token')
    return {
        ...BASE_CONFIG.header,
        'Authorization': token ? `Bearer ${token}` : '',
        'X-Timestamp': Date.now().toString(),
        'USER-TOKEN': 'U2502210802513QSIT752OS1'
    }
}

// 封装 POST 请求
const post = ({ url, data = {}, options = {} }) => {
    return new Promise((resolve, reject) => {
        // 合并请求头
        const headers = {
            ...getCommonHeaders(),
            ...options.headers
        }

        // 加密数据（如果需要）
        //const encryptedData = options.needEncrypt ? encrypt(data) : data

        uni.request({
            url: `${BASE_CONFIG.baseUrl}${url}`,
            method: 'POST',
            data: data,
            header: headers,
            success: (res) => {
                // 解密响应数据（如果需要）
                if (options.needDecrypt && res.data) {
                    try {
                        res.data = decrypt(res.data)
                    } catch (error) {
                        //console.error('解密响应数据失败:', error)
                    }
                }

                // 统一处理响应
                if (res.statusCode === 200) {
                    //console.log(res.data.code);
                    
                    if (res.data.code === 2000) {
                        resolve(res.data)
                    } else if (res.data.code === 2002) {
                       
                        //需要登录
                        uni.showToast({
                            title: '需要登录1',
                            icon: 'none'
                        })

                        reject(res.data)
                    }
                    else {
                       
                        // 处理业务错误
                        uni.showToast({
                            title: res.data.message || '请求失败',
                            icon: 'none'
                        })
                        //reject(res.data)
                    }
                } else {
                    // 处理 HTTP 错误
                    uni.showToast({
                        title: '网络请求失败',
                        icon: 'none'
                    })
                    reject(res)
                }
            },
            fail: (err) => {
                uni.showToast({
                    title: '网络错误',
                    icon: 'none'
                })
                reject(err)
            }
        })
    })
}

// 导出工具方法
export default {
    post
} 